package com.agriculture.util;

import com.agriculture.bean.User;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;

public class JwtUtils {
    // 请将此密钥替换为一个安全且足够长的密钥
    private static final String SECRET_KEY = "yourSecretKey";
    // Token 有效期，这里设置为 1 天（单位毫秒）
    private static final long EXPIRATION_TIME = 86400000L;

    public static String generateToken(User user) {
        return Jwts.builder()
                // 设置主题，这里可以使用用户的 phone 或 id
                .setSubject(user.getPhone())
                // 可加入其他自定义声明，例如用户 id 和 username
                .claim("userId", user.getId())
                .claim("username", user.getUsername())
                // 设置 token 生成时间
                .setIssuedAt(new Date())
                // 设置 token 过期时间
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                // 使用 HS512 算法和 SECRET_KEY 进行签名
                .signWith(SignatureAlgorithm.HS512, SECRET_KEY)
                .compact();
    }

    // 可选：验证 token 的方法
    public static boolean validateToken(String token) {
        try {
            Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}
